package org.ymx.myTree;

/**
 * @author 17122
 * 节点类
 */
public class Node<E> {

    /**
     * 节点的权(值)
     */
    private E value;

    /**
     * 左儿子
     */
    Node<E> leftNode;

    /**
     * 右儿子
     */
    Node<E> rightNode;


    public Node(E value) {
        this.value = value;
    }

    /**
     * 设置左儿子
     *
     * @param leftNode
     */
    public void setLeftNode(Node<E> leftNode) {
        this.leftNode = leftNode;
    }

    /**
     * 设置右儿子
     *
     * @param rightNode
     */
    public void setRightNode(Node<E> rightNode) {
        this.rightNode = rightNode;
    }

    /**
     * 前序遍历
     */
    public void frontShow() {
        //先遍历当前节点的内容
        System.out.print(value + " ");
        //左节点
        if (leftNode != null) {
            leftNode.frontShow();
        }
        //右节点
        if (rightNode != null) {
            rightNode.frontShow();
        }
    }

    /**
     * 中序遍历
     */
    public void midShow() {
        //左子节点
        if (leftNode != null) {
            leftNode.midShow();
        }
        //当前节点
        System.out.print(value + " ");
        //右子节点
        if (rightNode != null) {
            rightNode.midShow();
        }
    }

    /**
     * 后序遍历
     */
    public void afterShow() {
        //左子节点
        if (leftNode != null) {
            leftNode.afterShow();
        }
        //右子节点
        if (rightNode != null) {
            rightNode.afterShow();
        }
        //当前节点
        System.out.print(value + " ");
    }
}
